Skip to content

Conversation

@maranicolae
Copy link
Owner

@maranicolae maranicolae commented Apr 10, 2022

Laborator 6

Exercițiul 1

Am alocat (NPAGES + 2) * PAGE_SIZE memorie (o pagină se va pierde probabil la găsirea primei alinieri), apoi în kmalloc_area am reținut prima adresă aliniată cu dimensiunea unei pagini prin PAGE_ALIGN.

În funcția ce implementează funcționalitatea mmap am identificat PFN-ul și am mapat memoria fizică anterior alocată la cea virtuală cu remap_pfn_range.

Exercițiul 2

Foarte asemănător cu exercițiul anterior, de această dată memoria fizică nu mai este continuă și de aceea trebuie să iteram prin toate paginile și să le mapăm individual pe fiecare.

Exercițiul 3

Am implementat funcțiile my_read și my_write ce preiau, respectiv trimit informații de la/către userspace.

Exercițiul 4

Folosind create_proc_entry (de fapt create_proc) am instantiat un nou fișier /proc. Dacă apelul s-a efectuat cu succes atunci se va asigna membrului proc_fops structura my_proc_ops care este deja definită.

În funcția de exit a modulului am folosit remove_proc_entry pentru a șterge fișierul.

În funcția my_seq_show am extras câmpul mm din current; iterand prin toate mapările am adăugat diferența dintre start și end la variabila total și am afișat valorile acestora. La final am afișat valoarea variabilei total folosind seq_printf și single_open.

Signed-off-by: Mara <maraioana9967@gmail.com>
Signed-off-by: Mara <maraioana9967@gmail.com>
Signed-off-by: Mara <maraioana9967@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant